# -*- coding: utf-8 -*-
"""
File Name: 类型转换.py

@author: lengf
@date: 2025-04-13
@email: lengfo@163.com
@version: 1.0.0
"""


# 类型转换
# 1. 整数转字符串：str()
print('整数123转字符串：',str(123))


# 2. 浮点数转字符串：str()
print('浮点数12.345转字符串：',str(12.345))

# 3. 字符串转整数：int()
print('字符串"123"转整数：',int('123'))

# 4. 字符串转浮点数：float()
print('字符串"12.345"转浮点数：',float('12.345'))


# 5. 布尔值转字符串：str()
print('布尔值True转字符串：',str(True))


# 6. 字符串转布尔值：bool()
print('字符串"True"转布尔值：',bool('True'))
print('字符串"False"转布尔值：',bool('False'))
print('字符串"abc"转布尔值：',bool('abc'))
print('字符串""转布尔值：',bool(''))


# 7. 其他类型转布尔值：bool()
print('整数123转布尔值：',bool(123))
print('整数0转布尔值：',bool(0))

# 8. 其他类型转字符串：str()   就是一串字符，如列表转来外面有中括号，元组转来外面有小括号，字典转来外面有花括号，集合转来外面有花括号
print('列表[a,bbb,3]转字符串：',str(['a','bbb',3]))
print('元组(a,bbb,2,3)转字符串：',str(('a','bbb',2,3)))
print('字典{"a":1,"b":2,"c":3,"d":4}/转字符串：',str({'a':1,'b':2,'c':3,'d':4}))   
print('集合{"a","b","c","d","e"}/转字符串：',str({'a','b','c','d','e'}))    # 这里顺序不确定。


# 9. 元组转列表：list()
print('元组(1,2,3)转列表：',list((1,2,3)))   
# 这里只是另建立了一个新的列表，原来的元组没有改变。证明
tuple1 = (1,2,3)
list1 = list(tuple1)
print('元组(1,2,3)转列表后：',tuple1,id(tuple1),list1,id(list1))    # 元组没有改变，但是列表的地址改变了 ,只是重新建立了一个新的列表

# 10. 列表转元组：tuple()
print('列表[1,2,3]转元组：',tuple([1,2,3]))
# 这里只是另建立了一个新的元组，原来的列表没有改变。

# 11. 字符串转列表：list()
print('字符串"123,456,789"转列表：',list('123,456'))
# 这里只是分割字符串，并建立了一个新的列表。是把字符串每个字符当做一个元素，组成列表。
str1 = '123,456,789'
list1 = str1.split(sep=',')    # 使用字符串的split()方法，这里使用逗号分割，分割成列表，如没有指定sep，则默认分割空格。
print('字符串"123,456,789"转列表后：',str1,id(str1),list1,id(list1))    # 字符串没有改变，但是列表的地址改变了，只是重新建立了一个新的列表


# 13. 字典转列表：list()
print('字典{"a":1,"b":2,"c":3,"d":4}转列表：',list({'a':1,'b':2,'c':3,'d':4}))
# 这里只是把字典的键值对组成列表，并建立了一个新的列表。
# 如有需要，可用items()方法，把键值对组成元组，再用list()方法转换。

# 14. 列表转字典：dict()
print('列表[("a",1),("b",2),("c",3),("d",4)]转字典：',dict([("a",1),("b",2),("c",3),("d",4)])) 
 # 这里用列表的每个元素，组成键值对，组成字典,要求每个元素是元组且长度为2且第一个元素是字符串，且第二个元素是可哈希的。
 # 如有需要，可用zip()方法，把两个列表组成元组，再用dict()方法转换。
 

# 15. 字符串转元组：tuple()
print('字符串"123,456,789"转元组：',tuple('123,456'))
# 这里只是分割字符串，并建立了一个新的元组。是把字符串每个字符当做一个元素，组成元组。
tuple1 = tuple('123,456,789'.split(sep=','))    # 使用字符串的split()方法，这里使用逗号分割，分割成列表，如没有指定sep，则默认分割空格。后面要转元组，所以用tuple()方法。
print('字符串"123,456,789"转元组后：',tuple1,id(tuple1))    # 元组没有改变，但是地址改变了，只是重新建立了一个新的元组

# 17. 字符串转集合：set()
str1 = '123,456,789'
set1 = set(str1.split(sep=','))    # 使用字符串的split()方法，这里使用逗号分割，分割成列表，如没有指定sep，则默认分割空格。后面要转集合，所以用set()方法。
print('字符串"123,456,789"转集合后：',set1,id(set1))    # 集合没有改变，但是地址改变了，只是重新建立了一个新的集合
print(type(str1.split(sep=',')))    # 输出类型为列表

